home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er Special 83
/
64er_Magazin_Sonderheft_83_19xx_Markt__Technik_de_Side_A.d64
/
ultramenue maker
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
9KB
|
232 lines
1000 rem ***
1010 rem *** ultraboot menue maker ***
1020 rem *** 1992 martin pfost
1030 rem *** (c) 1992 heureka software
1040 rem ***
1050 poke 53280,14:poke 53281,14
1060 poke 56,49:poke 55,255:clr
1070 print "[147] *** [213]ltraboot [205]enue [205]aker ***"
1080 print "* 1992 [205]artin [208]fost"
1090 print "* (c) 1992 [200]eureka [212]eachware"
1100 print " *** maximale [194]lockanzahl : 104"
1110 print "[213]ltraboot [205]enue [205]aker erstellt auf"
1120 print "[196]iskette ein [198]ile, das mit dem modifi-"
1130 print "zierten [213]ltraboot [205]aker auf die [218]iel-"
1140 print "diskette zu schreiben ist ."
1150 print " *** [196]ie [204]oad,[211]ave,[196]ir-[210]outinen werden"
1160 print " gelesen ."
1170 c=0:for i=52992 to 53109:read d:poke i,d:c=c+d:next:if c=18731 then 1190
1180 print "??? [198]ehler in [196]ata-[218]eilen !":stop
1190 print " *** [196]ie [213]ltraboot-[205]enue-[196]aten werden"
1200 print " gelesen ."
1210 c=0:for i=12800 to 13506:read d:poke i,d:c=c+d:next:if c<>70818 then 1180
1220 rem *** eingabe der filenamen
1230 clr:ad=13507:dim m%(5,20),zt%(9,9),sb(9),sa%(9,9),n$(9)
1240 print "[147] *** [199]eben [211]ie jetzt die entsprechen-"
1250 print " [198]iles ein ! ($=[196]ir. [210]et=[197]nde)"
1260 print "==> [198]ilename [206]r.";fz+1;" ";:a$="":input a$
1270 if a$="$" then open 1,8,0,a$:sys 52992:close 1:gosub2730:goto 1240
1280 if a$="" and fz=0 then end
1290 if a$="" then 1320
1300 fz=fz+1:n$(fz)=a$:if fz<9 then 1260
1310 rem *** kontrolle der filenamen
1320 print "[147]":gosub 2700
1330 input "==> [207]k (j/n) ";a$:if a$<>"j" then 1230
1340 print "[147] *** [199]eben [211]ie jetzt ein, wie die [198]iles"
1350 print " gestartet werden ."
1360 print " s : [211]ys"
1370 print " r : [210]un"
1380 print " t : [212]ool-[198]ile"
1390 for i=1 to fz
1400 print "[198]ile";i;" : ";n$(i):input "==> [211]tartbefehl (s/r/t) ";a$
1410 sb(i)=680:if a$="s" then input "==> [193]dresse ";sb(i)
1420 if a$="t" then sb(i)=168
1430 next i
1440 print "[147]":for i=1 to fz
1450 print "[198]ile";i;" : ";n$(i);tab(28);
1460 if sb(i)=680 then print "[210]un":goto 1490
1470 if sb(i)=168 then print "[212]ool-[198]ile":goto 1490
1480 print "[211]ys";sb(i)
1490 next i
1500 input "==> [207]k (j/n) ";a$:if a$<>"j" then 1340
1510 rem *** eingabe der saetze
1520 sz=0
1530 print "[147] *** [199]eben [211]ie jetzt ein, welches [198]ile"
1540 print " enthalten sein soll ! ([210]et=[197]nde)"
1550 print " [211]atz :";sz+1;"":gosub 2700:i=0
1560 print "==>";i+1;". [206]ummer ";:a$="":input a$
1570 if a$="" then 1600
1580 if val(a$)=0 or val(a$)>fz then print "[145]";:goto 1560
1590 i=i+1:zt%(sz+1,i)=val(a$):if i<9 then 1560
1600 input "==> [207]k (j/n) ";a$:if a$<>"j" then 1530
1610 zt%(sz+1,0)=i:if i<>0 then sz=sz+1:if sz<9 then 1530
1620 rem *** autostartabfrage
1630 i=1
1640 if i>sz then 1720
1650 print "[147]*** [199]eben [211]ie jetzt ein, ob ein [198]ile"
1660 print " automatisch gestartet werden soll !"
1670 print "[211]atz :";i;""
1680 for j=1 to zt%(i,0):print j;". [198]ile : ";n$(zt%(i,j))
1690 s=0:input "==> [193]utostart (j/n) ";a$:if a$="j" then s=1
1700 sa%(i,j)=s:next j:i=i+1:goto 1640
1710 rem *** satzkontrolle
1720 c=32
1730 gosub 2840:print:i=1
1740 if i>sz then 1830
1750 print "";right$(str$(i),1);"[146] ";:s=2
1760 for j=1 to zt%(i,0)
1770 d=len(n$(zt%(i,j)))+1
1780 if s+d>38 then print:print " ";:s=2
1790 if sa%(i,j) then print "";
1800 print n$(zt%(i,j));"[146] ";:s=s+d
1810 next j:print:if c=32 then print
1820 i=i+1:goto 1740
1830 if peek(214)<23 then 1850
1840 if c=32 then c=44:goto 1730
1850 poke 13041,c:gosub 2730:gosub 2840
1860 for i=1 to fz:print "";right$(str$(i),1);"[146] ";n$(i):next i
1870 input "==> [193]lles [207]k (j/n) ";a$:if a$<>"j" then 1230
1880 rem *** ultramenue generieren
1890 print "[147] *** [213]ltramenue wird erzeugt ."
1900 of=12800-2049:for i=1 to fz:for j=1 to len(n$(i))
1910 poke ad,asc(mid$(n$(i),j,1)):ad=ad+1:next j:poke ad,0:ad=ad+1:next i
1920 e1=ad-of:for i=1 to fz:poke ad,len(n$(i))+1:ad=ad+1:next i
1930 poke ad,0:ad=ad+1:e2=ad-of:s=-1:n$(0)=""
1940 for i=0 to fz-1:s=s+len(n$(i))+1:poke ad,s:ad=ad+1:next i
1950 e3=ad-of:i=1
1960 if i>sz then 2020
1970 for j=1 to zt%(i,0):e=zt%(i,j)
1980 if sa%(i,j) then e=e+16
1990 if j=zt%(i,0) then e=e+128
2000 poke ad,e:ad=ad+1:next j
2010 i=i+1:goto 1960
2020 poke ad,0:ad=ad+1:e4=ad-of
2030 s=0:i=0:zt%(0,0)=0
2040 if i=sz then 2060
2050 s=s+zt%(i,0):poke ad,s:ad=ad+1:i=i+1:goto 2040
2060 e5=ad-of:for i=1 to fz
2070 poke ad+fz*2+i-1,sb(i)-256*int(sb(i)/256):poke ad+fz*3+i-1,int(sb(i)/256)
2080 next i:ad=ad+6*fz
2090 poke 12825,e3-256*int(e3/256):poke 12826,int(e3/256)
2100 poke 12842,peek(12825):poke 12843,peek(12826)
2110 poke 12858,e4-256*int((e4-1)/256)-1:poke 12859,int((e4-1)/256)
2120 poke 12865,e3-256*int((e3-1)/256)-1:poke 12866,int((e3-1)/256)
2130 poke 12947,e1-1-256*int((e1-1)/256):poke 12948,int((e1-1)/256)
2140 poke 13142,peek(12947):poke 13143,peek(12948)
2150 poke 13164,e2-1-256*int((e2-1)/256):poke 13165,int((e2-1)/256):e4=88-6*fz
2160 poke 13219,e4:poke 13224,e4+fz:for i=2 to 5:poke 13217+6*i,i*fz+e4:next
2170 poke 13477,6*fz-1:poke 13478,e5-256*int(e5/256):poke 13479,int(e5/256)
2180 poke 13480,e4+1
2190 rem *** files lesen
2200 open 15,8,15
2210 print " *** [196]ie [198]iles werden gelesen ."
2220 le(0)=ad-12800:gosub 2810:bl(0)=bz
2230 for i=1 to fz:print " [198]ile";i;": ";n$(i):gosub 2720
2240 open 1,8,0,n$(i):gosub 2760:if e then close 1:goto 2240
2250 get#1,a$:if a$="" then a$=chr$(0)
2260 poke e5+of+i-1,asc(a$)
2270 get#1,a$:if a$="" then a$=chr$(0)
2280 poke e5+of+fz+i-1,asc(a$)
2290 poke 174,ad-256*int(ad/256):poke 175,int(ad/256):e1=ad:e2=bz
2300 sys 53048:close 1:ad=peek(174)+256*peek(175)
2310 le(i)=ad-e1:e1=ad:gosub 2810:bl(i)=bz-e2
2320 if bz>104 then print "??? [218]u viele [194]loecke !":stop
2330 next i
2340 rem *** bloecke berechnen
2350 print " *** [194]erechnung der [194]loecke"
2360 sd=5:gs=17
2370 if bz>84 then gs=18:sd=5
2380 if bz>89 then gs=19:sd=5
2390 if bz>94 then gs=21:sd=6
2400 t=36:s=sd+1:m%(1,0)=1:m%(1,sd+1)=1
2410 for i=0 to fz-1:for j=1 to bl(i)
2420 s=s+sd:c=gs
2430 s=s+1:if s>=gs then s=s-gs
2440 if m%(t-35,s)=0 then 2470
2450 c=c-1:if c>0 then 2430
2460 t=t+1:goto 2440
2470 m%(t-35,s)=1:next j
2480 poke e5+of+4*fz+i,t:poke e5+of+5*fz+i,s:next i
2490 rem *** datenfile erzeugen
2500 print " *** [213]ltraboot [205]enue schreiben"
2510 print "==> [199]eben [211]ie jetzt den [206]amen ein !":input " [206]ame ";b$
2520 gosub 2720:print " *** [196]as [196]atenfile wird erzeugt ."
2530 open 2,8,2,b$+"+,s,w":gosub 2760:if e then close 2:goto 2530
2540 s=0:for i=0 to fz-1
2550 s=s+bl(i):print#2,s:print#2,abs(le(i)-1-254*int(le(i)/254)):next i
2560 print#2,999:print#2,0:close 2
2570 rem *** ultramenue schreiben
2580 print " *** [213]ltraboot [205]enue wird geschrieben ."
2590 open 1,8,1,b$:gosub 2760:if e then close 1:goto 2590
2600 print#1,chr$(1)+chr$(8);
2610 poke 174,0:poke 175,50:poke 172,e1-256*int(e1/256):poke 173,int(e1/256)
2620 sys 53073:close 1:close 15
2630 print "'";b$;"' steht auf der [196]iskette ."
2640 print "[197]s muss jetzt mit dem modifizierten"
2650 print "[213]ltraboot [205]aker auf die [218]ieldiskette"
2660 print "geschrieben werden ."
2670 input "==> [206]och ein [213]ltramenue-[198]ile (j/n) ";a$:if a$="j" then 1230
2680 end
2690 rem *** ausgabe der filenamen
2700 print "[198]iles :"
2710 for i=1 to fz:print "[198]ile [206]r.";i;" : ";n$(i):next i:print:return
2720 print "==> entsprechende [196]iskette einlegen !"
2730 get a$:if a$="" then 2730
2740 return
2750 rem *** diskstatus testen
2760 input#15,e,e$,et,es:if e=0 then return
2770 print "??? [196]isk-[198]ehler !":print e;e$;et;es
2780 input "==> [206]och einmal versuchen (j/n) ";a$:if a$="j" then return
2790 stop
2800 rem *** ad auf naechsten block
2810 by=(ad-12800)-254*int((ad-12800)/254):if by<>0 then ad=ad+254-by
2820 bz=int((ad-12800)/254):return
2830 rem *** kopfzeile schreiben
2840 print "[147]*** [213]ltraboot [205]enue *** [205]artin [208]fost"
2850 print " (c) 1992 [200]eureka [212]eachware":print "0[146] [198]ile [211]elect":return
2860 rem *** loadsavedirroutinen
2870 data162,1,32,198,255,32,207,255,32,207,255,169,13,32,210,255,32,207,255
2880 data133,255,32,207,255,5,255,208,3,76,204,255,32,207,255,170,32,207,255
2890 data32,205,189,169,32,32,210,255,32,207,255,240,216,32,210,255,144,246
2900 data162,1,32,198,255,160,0,32,207,255,145,174,230,174,208,2,230,175,166
2910 data144,240,241,76,204,255,198,1,162,1,32,201,255,160,0,177,174,32,210
2920 data255,230,174,208,2,230,175,165,174,197,172,208,239,165,175,197,173
2930 data208,233,230,1,76,204,255
2940 rem *** ultramenue
2950 data12,8,194,7,158,32,50,48,54,50,0,0,0,169,14,141,32,208,141,33,208
2960 data32,230,8,188,3,11,240,18,32,242,8,152,72,32,75,9,232,104,48,239,188
2970 data3,11,76,33,8,32,23,9,176,55,240,75,41,15,168,190,11,11,160,255,232
2980 data200,189,2,11,153,247,2,16,246,32,19,9,162,29,160,4,189,166,10,153
2990 data167,0,202,136,16,246,168,177,168,145,170,136,16,249,138,16,233,76
3000 data75,3,88,76,176,2,76,19,9,166,168,240,249,32,222,8,166,168,189,246
3010 data2,9,128,157,246,2,48,199,32,230,8,134,168,232,32,245,8,138,168,169
3020 data0,32,82,9,232,189,247,10,208,240,32,15,9,56,32,240,255,134,170,132
3030 data171,166,170,164,171,24,32,240,255,32,23,9,176,191,240,208,72,32,19
3040 data9,32,19,9,32,10,9,104,166,168,224,9,176,224,232,157,246,2,134,168
3050 data72,202,240,3,32,222,8,104,32,75,9,56,32,240,255,134,172,132,173,16
3060 data197,166,172,164,173,24,76,240,255,169,52,160,10,32,30,171,162,0,134
3070 data167,96,32,15,9,32,15,9,230,167,165,167,9,48,133,199,32,210,255,169
3080 data0,133,199,96,230,169,169,32,76,210,255,169,0,133,169,169,13,208,245
3090 data169,151,160,10,32,30,171,32,228,255,133,204,201,13,240,23,201,33
3100 data144,243,201,58,176,239,168,41,15,197,167,240,2,176,230,152,41,31
3110 data73,16,24,170,160,0,132,207,164,211,169,32,145,209,138,96,72,41,15
3120 data168,104,41,16,72,32,8,9,185,247,10,101,169,133,169,201,39,144,8,32
3130 data15,9,32,8,9,144,234,104,133,199,185,253,10,168,185,196,10,240,6,32
3140 data210,255,200,208,245,76,3,9,77,45,69,5,2,169,0,141,255,3,169,0,141
3150 data254,3,169,1,141,120,3,76,17,3,160,176,173,247,2,16,3,140,68,3,72
3160 data41,15,168,185,33,2,133,45,185,38,2,133,46,185,43,2,141,236,2,185
3170 data48,2,141,237,2,185,53,2,141,58,3,185,58,2,141,63,3,173,17,208,41
3180 data239,141,17,208,169,8,32,177,255,169,111,32,147,255,162,233,189,75
3190 data2,32,168,255,232,208,247,32,174,255,169,0,32,113,168,76,174,167,238
3200 data78,3,165,45,133,174,165,46,133,175,173,17,208,9,16,141,17,208,162
3210 data3,32,85,228,174,237,2,208,5,169,2,141,237,2,104,10,41,32,208,7,138
3220 data240,4,144,110,176,15,176,10,169,75,141,2,3,169,3,141,3,3,32,0,0,32
3230 data119,166,32,215,170,108,0,3,9,14,146,147,31,42,42,42,32,117,76,84
3240 data82,65,66,79,79,84,32,109,69,78,85,69,32,42,42,42,32,32,32,32,109
3250 data65,82,84,73,78,32,112,70,79,83,84,13,32,32,32,32,32,32,40,67,41,32
3260 data49,57,56,54,32,104,69,85,82,69,75,65,32,116,69,65,67,72,87,65,82
3270 data69,13,13,18,48,146,32,102,73,76,69,83,32,65,85,83,83,85,67,72,69
3280 data78,0,13,13,105,72,82,69,32,119,65,72,76,32,58,32,0,31,14,11,34,2
3290 data3,104,8,250,3,78,229,9,168,2,102,126,9,52,3,95,84,3,155,3,7,210,252
3300 data90,3